<?php
namespace App\Common\Services;

use App\Edu\Models\EduQuestionModel;
use App\Services\CommonService;

class OfficeService extends CommonService
{
    /** 
     * file下载到本地
     */
    public function downloadFile($file)
    {
        $wordPath = config("obs.obsDomain") . $file;
        $saveToUrl = storage_path('upload/' . basename($wordPath));
        downloadRemoteFile($wordPath, $saveToUrl);
        return $saveToUrl;
    }

    /**
     * 获取word文档内容
     */
    public function getWordInfo($file)
    {
        $saveToUrl = $this->downloadFile($file);
        if (pathinfo($file, PATHINFO_EXTENSION) === 'txt') {
            $text = file_get_contents($saveToUrl);
        } else {
            $text = $this->getWord($saveToUrl);
        }
        unlink($saveToUrl);
        return $text;
    }

    /**
     * 获取word文档内容
     * @param string $wordPath
     * @return array
     */
    public function getWord($wordPath = '')
    {
        //加载word文档，使用phpword处理
        $word = \PhpOffice\PhpWord\IOFactory::load($wordPath);
        $texts = $this->getNodeContent($word);
        return $texts;
    }

    /**
     * 根据word主节点获取分节点内容
     * @param $word
     * @return array
     */
    public function getNodeContent($word)
    {
        $return = [];
        //分解部分
        foreach ($word->getSections() as $section)
        {
            if ($section instanceof \PhpOffice\PhpWord\Element\Section) {
                //分解元素
                foreach ($section->getElements() as $element)
                {
                    //文本元素
                    if ($element instanceof \PhpOffice\PhpWord\Element\TextRun) {
                        $text = '';
                        foreach ($element->getElements() as $ele) {
                            $text .= $this->getTextNode($ele);
                        }
                        $return[] = $text;
                    }
                    //表格元素
                    else if ($element instanceof \PhpOffice\PhpWord\Element\Table) {
                        foreach ($element->getRows() as $ele)
                        {
                            $return[] = $this->getTableNode($ele);
                        }
                    }
                }
            }
        }
        return $return;
    }

    /**
     * 获取文档节点内容
     * @param $node
     * @return string
     */
    public function getTextNode($node)
    {
        $return = '';
        //处理文本
        if ($node instanceof \PhpOffice\PhpWord\Element\Text)
        {
            $return .= $node->getText();
        }
        //处理图片
        else if ($node instanceof \PhpOffice\PhpWord\Element\Image)
        {
            $return .= $this->pic2text($node);
        }
        //处理文本元素
        else if ($node instanceof \PhpOffice\PhpWord\Element\TextRun) {
            foreach ($node->getElements() as $ele) {
                $return .= $this->getTextNode($ele);
            }
        }
        return $return;
    }

    /**
     * 获取表格节点内容
     * @param $node
     * @return string
     */
    public function getTableNode($node)
    {
        $return = '';
        //处理行
        if ($node instanceof \PhpOffice\PhpWord\Element\Row) {
            foreach ($node->getCells() as $ele)
            {
                $return .= $this->getTableNode($ele);
            }
        }
        //处理列
        else if ($node instanceof \PhpOffice\PhpWord\Element\Cell) {
            foreach ($node->getElements() as $ele)
            {
                $return .= $this->getTextNode($ele);
            }
        }
        return $return;
    }

    /**
     * 处理word文档中base64格式图片
     * @param $node
     * @return string
     */
    public function pic2text($node)
    {
        //获取图片编码
        $imageData = $node->getImageStringData(true);
        //添加图片html显示标头
        $imageData = 'data:' . $node->getImageType() . ';base64,' . $imageData;
        $return = '<img src="'.$imageData.'">';
        return $return;
    }

    /** 
     * 获取PDF文档内容
     */
    public function getPDFInfo($file, $jsonData)
    {
        $basename = basename($file);
        $title = explode('.', $basename)[0]; // 试卷标题
        // $basename = basename($file);
        // $title = explode('.', $basename)[0]; // 试卷标题
        // $data = json_decode($jsonData, true);
        // {"试卷名称":"","单项选择题":[{"题目":"","选项":[],"答案":""}],"多项选择题":[{"题目":"","选项":[],"答案":""}],"判断选择题"::[{"题目":"","答案":""}],"填空题":[{"题目":"","答案":""}],"材料分析题":[{"题目":"","答案":""}]}
        // $parser = new \Smalot\PdfParser\Parser();
        // $saveToUrl = $this->downloadFile($file);
        // $pdf = $parser->parseFile($saveToUrl);
        // $text = $pdf->getText();
        // $texts = explode("\n", $text);
        // dd(json_encode($texts, JSON_UNESCAPED_UNICODE));
        $texts = json_decode('["1","2023 年福建省中小学新任教师公开招聘考试","教育综合知识试卷","一、单项选择题（本大题共 20 小题，每小题 2 分，共 40 分）","1. 习近平总书记在中国共产党第二十次全国代表大会上所作的《高举中国特色社会主义伟","大旗帜为全面建设社会主义现代化国家而团结奋斗》的报告中，宣读了二十大的主题，该主题","要求弘扬伟大的（  ）。","A. 创造精神 \tB. 奋斗精神 \tC. 建党精神 \tD. 团结精神","2.2022 年 6 月 5 日，神舟十四号载人飞船在酒泉发射成功，执行这次载人飞行任务的航天","员是（  ）。","A. 陈冬、叶光富、聂海胜 \tB. 陈冬、刘洋、蔡旭哲","C. 杨利伟、刘洋、蔡旭哲 \tD. 杨利伟、叶光富、聂海胜","3.2022 年 6 月 17 日上午，我国举行第三艘航空母舰下水命名仪式，中央军委，我国第三","艘航空母舰命名为中国人民解放军海军（  ）。","A. 福建舰 \tB. 浙江舰 \tC. 山东舰 \tD. 辽宁舰","4.2022 年 10 月 30 日，十三届全国人大常委会第二十七次会议表决通过的，旨在加强河流","生态环境的法律是（  ）。","A.《中华人民共和国长江保护法》 \tB.《中华人民共和国流沙保护法》","C.《中华人民共和国黄河保护法》 \tD.《中华人民共和国珠江保护法》","5.2022 年 11 月 20 日至 12 月 18 日，第二十二届世界杯足球赛再次在亚洲举行。世界中东","地区举办的首届世界杯，此次世界杯的举办地是（  ）。","A. 法国 \tB. 意大利 \tC. 阿根廷 \tD. 卡塔尔","6.2022 年 11 月 29 日，我国非物质文化遗产项目又一次申遗成功，并列入联合国教科文组","织人类非物质文化遗产该非物质文化遗产项目是（  ）。","A. 送王船 \tB. 中秋节","C. 藏医药浴法 \tD. 中国传统制茶技艺及其相关习俗","7.2022 年 12 月 20 日，标志着世界最大清洁能源走廊全面建成的大型水电工程是（  ）。","A. 闽江水电站 \tB. 白鹤滩水电站 \tC. 三峡水电站 \tD. 小浪底水电站","8. 依据《中国学生发展核心素养》，下列属于自主发展内涵的是（  ）。","A. 人文底蕴 \tB. 实践创新 \tC. 健康生活 \tD. 科学精神","9.《中小学教育惩戒规则（试行）》第十二条规定，教师在教育教学管理、实施教育惩戒","过程中，不得有的行为是（  ）。","A. 点名批评","B. 承担校内公益服务任务","","2","C 责令赔礼道歉、做口头或书面检讨","D. 因个人或少数人违规违纪行为而惩罚全体学生","10. 我国最早出现“教育”一词在“得天下英才而教育之，三乐也”这句话中，该句话出自（  ）。","A.《学记》 \tB.《论语》 \tC.《说文解字》 \tD.《孟子·尽心上》","11. 孟禄认为“原始社会的教自使用的方法从头到尾都是简单的无意识的模仿”。这里的","体现的教育起源是（  ）。","A. 神话起源学说 \tB. 生物起源学说 \tC. 心理起源学说 \tD. 劳动起源学说","12. 我国教育目的的历史演变过程中，强调“培养学生的创新精神和实践能力”的方针出","自（  ）。","A.《中华人民共和国宪法》","B.《国家中长期教育改革和发展规划纲要（2010-2022）》","C.《中共中央国务院关于深化教育改革，全面推进素质教育的决定》","D.《中共中央关于制定国民经济和社会发展十年规划和八五计划的建议》","13. 一项关于“教师工作满意度”的问卷调查，其答案选项是“非常满意”和“非常不满意”","此处违背的问卷设计原则的（  ）。","A. 穷尽性 \tB. 互斥性 \tC. 平衡性 \tD. 同层性","14. 我国古代“六艺”和古希腊“七艺”的课程类别是（  ）。","A. 学科课程 \tB. 活动课程 \tC. 综合课程 \tD. 隐性课程","15. 无论在白天还是晚上，我们都会把我国国旗知觉为鲜红色，这体现的是（  ）。","A. 形状恒常性 \tB. 颜色恒常性 \tC. 方向恒常性 \tD. 大小恒常性","16. 某同学擅长识别水仙花等花卉，这属于多元智力中的（  ）。","A. 语言智力 \tB. 自然智力 \tC. 内省智力 \tD. 逻辑数学智力","17. 奥苏贝尔提出的学习理论关于（  ）。","A. 意义学习 \tB. 内隐学习 \tC. 观察学习 \tD. 信息加工学习","18.“衣食足而知荣辱，仓廪实而知礼仪”，其中衣食属于（  ）。","A. 生理需要 \tB. 安全需要 \tC. 归属需要 \tD. 自我实现","19. 下列词语中体现激情的是（  ）。","A. 急中生智 \tB. 欣喜若狂 \tC. 心平气和 \tD. 闷闷不乐","20. 衡量一个班集体成功与否的主要标志是（  ）。","A. 群体规范 \tB. 群体舆论 \tC. 群体气氛 \tD. 群体凝聚力","","3","二、多项选择题（本大题共 10 小题，每小题 2 分，共 20 分）","21. 依据《中华人民共和国教师法》规定，下列属于教师权利的有（  ）。","A. 参加进修或其他方式的培训","B 不断提高思想政治觉悟和教育教学业务水平","C. 指导学生的学习和发展，评定学生的品行和学业成绩","D. 制止有害于学生的行为或其他侵犯学生合法权益的行为，批评和抵制有害于学生健康","成长的现象","22.《中华人民共和国未成年人保护法》第三十八条规定，学校、幼儿园不得（  ）。","A. 安排未成年人参加商业性活动","B. 安排未成年人参加文化娱乐、社会实践等集体活动","C. 与校外培训机构合作，为未成年人提供有偿课程辅导","D. 向未成年人及其父母或者其他监护人推销或者要求其购买指定的商品和服务","23. 下列关于政治对教育的影响，正确的有（  ）。","A. 政治影响教学方法 \tB. 政治决定教育的社会性质","C. 政治影响教育宗旨和目的 \tD. 政治影响教育领导权和受教育权","24. 素质教育的内涵具体包括（  ）。","A. 面向全体学生 \tB. 促进学生个性发展","C. 以提高国民素质为目的 \tD. 具有全面性、主动性和可持续性","25. 专业化教师合理的知识结构应包括（  ）。","A. 通识性知识 \tB. 本体性知识 \tC. 条件性知识 \tD. 实践性知识","26. 思维的基本形式（  ）。","A. 概念 \tB. 概括 \tC. 推理 \tD. 运用","27. 下列属于行为主义学习理论的有（  ）。","A. 布鲁纳的发现学习论 \tB. 苛勒的完形—顿悟说","C. 桑代克的联结—试误说 \tD. 斯金纳的操作条件反射论","28. 下列关于记忆的说法正确的有（  ）。","A. 短时记忆也称工作记忆 \tB. 记忆的容量是 7 加减 2 单元","C. 长时记忆保存时间是 1 分钟以上 \tD. 视觉后像是瞬时记忆的例子","29. 下列属于正迁移得有（  ）。","A. 方言对学习普通话的影响 \tB. 数学学习对理化生学习的影响","C. 汉语拼音对英语字母发音的影响 \tD. 外语学习中词汇的掌握对阅读的影响","30. 下列属于复述策略得有（  ）。","A. 划线 \tB. 分段记忆 \tC. 多种感官参与 \tD. 复习方式多样化","三、判断选择题（本大题共 15 小题，每小题 1 分，共 15 分）","31.《中华人民共和国教育法》第四十三条规定，在学业成绩和品行上获得公正评价，完","","4","成规定的学业后获得相应的学业证书、学位证书，是受教育者享有的权利之一。（  ）","A. 正确 \tB. 错误","32.《中小学教师违反职业道德行为处理办法》规定，警告和记过处分，公办学校教师由","所在学校决定，报主管教育部门备案，民办学校教师山所在学校提出建议，学校主管教育部门","决定。（  ）","A. 正确 \tB. 错误","33.“故君子之教，喻也。道而弗牵，强而弗抑，开而弗达”体现的是启发性原则。（  ）","A. 正确 \tB. 错误","34. 德育的基本途径是班主任工作。（  ）","A. 正确 \tB. 错误","35. 课程标准是根据教科书编写的有关课程与教学的纲领性文件。（  ）","A. 正确 \tB. 错误","36. 备课是整个教学活动的中心环节。（  ）","A. 正确 \tB. 错误","37. 学校教育在人的发展中发挥主导性作用是有条件的。（  ）","A. 正确 \tB. 错误","38. 经验中心主义课程的代表人物是杜威。（  ）","A. 正确 \tB. 错误","39. 幻想是不随意想象的特殊形式。（  ）","A. 正确 \tB. 错误","40. 人的一切心理活动就其产生的方式来说都是脑的活动。（  ）","A. 正确 \tB. 错误","41. 温和稳重、内向安静是多血质的心理特征。（  ）","A. 正确 \tB. 错误","42. 自我意识中的社会自我是青年初期开始发展和形成的。（  ）","A. 正确 \tB. 错误","43. 儿童学了“天气”概念后，再学习“台风”这个概念。这是类属学习。（  ）","A. 正确 \tB. 错误","44. 打球、游泳、阅读都属于操作技能。（  ）","A. 正确 \tB. 错误","45. 教育心理学研究的核心内容是学习过程。（  ）","A. 正确 \tB. 错误","四、填空题（本大题共 15 小题，每小题 1 分，共 15 分）","46.2022 年 6 月 30 日至 7 月 1 日，中共中央总书记、国家主席、中央军委主席习近平莅临","香港，出席庆祝香港回归祖国 ____________ 周年大会暨香港特别行政区第六届政府就职典礼，","并祝香港。习近平指出，有伟大祖国的坚定支持，有“一国两制”方针的坚定保障，在实现我","国第二个百年奋斗目标的新征程上，香港一定能够创造更大的辉煌。","","5","47.《中华人民共和国义务教育法》规定，实施义务教育，不收学费、____________。","48.《深化新时代教育评价改革总体方案》指出，牢固树立科学的教育发展理念，坚决克","服短视行为、____________ 倾向。","49. 第一个明确提出“教育性教学”的教育家是 ____________。","50. 我国教育目的的理论基础是马克思主义关于人的 ____________ 学说。","51. 我国学校教学的基本组织形式是 ____________。","52.1632 年夸美纽斯发表的著作是《____________》。","53. 根据教育目的、德育目标和德育过程规律指出的指导工作的基本要求是 ___________\t ","____________。","54.“两者相权取其轻”体现的动机冲突是 ____________ 冲突。","55. 根据思维探索问题答案的方向不同，把思维分为聚合思维和 ____________。","56. 教育心理学是研究教育情境中的 _______________ 基本心理规律的科学。","57. 艾宾浩斯遗忘曲线揭示的遗忘进程是 _______________。","58. 根据科尔伯格儿童道德发展阶段理论“好孩子”的取向阶段属于 _______________ 水平。","59. 强调教学不能适应发展的现有水平，而应适应最近发展区的心理学家 _______\t ","_______________。","60. 以注意力缺陷和活动过度为主要特征的行为障碍综合征是 _______________。","五、辨析题（本大题共 3 小题，每小题 5 分，共 15 分）","61. 荀子说：“蓬生麻中，不扶自直，白沙在涅，与之俱黑”，《爱莲说》则写道：“出","淤泥而不染，濯清涟而不妖”，结合影响人的发展的基本因素，对上述说法加以辨析。（5 分）","62. 思想品德教育不是一朝一夕的事，也不能一劳永逸，更需要有前瞻性和预见性。运用","德育过程的基本规律对此观点加以辨析。（5 分）","","6","63. 当一名教师越来越关注学生的成绩，并把精力放在如何教好每一堂课的时候，说明他已","经是名成熟的教师，结合福勒和布朗的教师专业成长阶段理论，对这个一论断进行辨析。（5 分）","六、材料分析题（本大题共 5 小题，64 题 6 分，65 题 9 分，66 题 11 分，67 题 8 分，","68 题 11 分，共 45 分）","64. 阅读材料，回答问题。","材料：","郑老师从名牌师范大学教学教育专业毕业，就回到家乡的农村中学任教，长达三十多年。","教学中，他坚持每学年都更新教案，布置给学生的每一道习题，他自己都要事先演练，为的是","“不让学生问倒”。每年的 3 月 14 日，学校都会举办一次特殊的“纪念活动”，激发学生学习，","探究科学的热情。该活动就是郑老师发起并组织的，郑老师从小就对手工制作感兴趣，曾用纸","片做船模，被某博物馆收藏。每年元宵节，他亲手制作的花灯都在最显眼的位置展示。郑老师","作为市人大代表，认真履行职责，曾对某些学校的“择校”问顾进行跟踪调查，提出整改建议，","她的多项提案均被采纳，有农村家庭教育问题，教育均衡发展问题，乡村教师培养问题。他的","关于全面脱贫、美丽乡村建设等提案也得到有关方面充分肯定。目前，郑老师的《学习强国》","中的积分，在教育系统中持续领先。","问题：","结合材料，运用《新时代中小学教师职业行为十项准则》分析郑老师行为。（6 分）","","7","65. 阅读材料，回答问题。","材料：","下列是某小学的评估手册的部分内容学习情况记录","科目\t平时\t学期 总评","语文","语基 66\t58\t61","作文（说话） 65 及格 70 及格 68","朗读\t及格","笔试\t及格","数学 笔试 75\t80","英语","体育\t优","科学\t优","音乐\t良","信息技术","道德与法治\t良","美术 书法\t良","综合实践","综合评语：某某同学本学期上课发呆，作业也不按时完成，成绩全班倒数第一。希望","你假期认真完成增加的作业，下学期能学会主动学习，争取在各方面进步 !","家长建议和意见：非常感谢老师对某某的耐心教育，假期里我们按照老师的要求，监","督他完成了所有作业，他的额外作业，我们也都一一检查批改过。我们会更加用心地督促","孩子改正缺点，认真配合老师的建议，也希望老师今后更加严格地要求某某，让他取得更","多的进步。","问题：","（1）结合该手册的内容，分析其违反相关法律法规（6 分）","（2）依据操行评定的要求，分析该综合评语存在哪些不足（3 分）","","8","66. 阅读材料，回答问题。","材料：","《面积单位的换算》教学片段","师：同学们，刚才我们认识了 1 平方厘米，如果用来测量数学书封面的面积，可以吗？","生 1：可以，可是 1 平方厘米太小了，量起来要花很多时间。","生 2：从学具中拿出 1 平方分米的正方形，我用这个正方形去量会更快。（老师给予肯定","和鼓励）","师：动手量一下，这个正方形的边长是多少分米？","生：（动手量一量）它的边长恰好是 1 分米。","师：边长为 1 分米的正方形，它的面积就是 1 平方分米，大家用这个正方形比一比，估一","估，数学书封面的面积约有多少平方分米？","生：大约 4 平方分米。","师：同学们找一找，生活中还有哪些物体的而积大约是 1 平方分米？","生 1：粉笔盒正面的面积大约是 1 平方分米。","生 2：我手掌的而积大约是 1 平方分米。","师：1 平方分米里面有多少个 1 平方厘米？同学都画画、摆一摆。","生：（小组讨论，动手操作）","生 1：先摆了一行 10 个，可以摆 10 行也就是 10 个 10，这样 1 平方分米就可以摆出 100","个 1 平方厘米。","生 3：（无序地摆）","","9","师：同学们拼摆的方法很多，不管怎么拼摆，一定要有序，比如先……再……（老师操作","演示）","师：那位同学能说出分米和厘米的进率是多少？","生 1：分米等于 10 厘米，所以他们的进率是 10。","师：今天我们学习了平方厘米和平方分米，大家议一议，他们之间的进率是多少？","（生上台介绍）","生 1：平方分米的正方形由 100 个 1 平方厘米的正方形组成，所以平方分米和平方厘米之","间的进率是 100。","（老师同学鼓掌）","（1）结合材料，分析该老师贯彻哪些教学原则（6 分）","（2）结合谈话法的基本要求，分析该教学片段。（5 分）","","10","67. 阅读材料，回答问题","材料：","彭老师在一年级的语文课上，发现学生有的上课几分钟就开始东张西望，有的边听课边玩","铅笔，有的会被窗外的鸟语声所吸引。于是，彭老师在课堂教学环节中，用清晰的语言，响亮","的声音，适当重复，让学生明确教学要点；采取读、说、演、唱等多种活动形式活跃课堂气氛；","采用竞赛、小组合作学习等方式激发学生的学习热情；还及时表扬专心听讲、正确回答问题的","学生；同时，适当用眼神、手势等非言语线索提醒学生，一段时间后，学生的听课效率有了明","显提高。","问题：","（1）从注意品质的角度，说明该班级学生存在的问题。（2 分）","（2）结合材料，分析彭老师提高学生注意力方法的理论依据。（6 分）","68. 阅读材料，回答问题。","材料：","小明十分聪明，但是爱玩，学习不刻苦。每次考试，他都喜欢耍小聪明押题。某次考试成","绩不佳，他认为自己倒霉，没有押中题。同班同学小红学习认真，以优异的成绩考取了理想的","中学，升入高中后的第一次期中考试，她的成绩中等，自己不服气，更加发奋地学习尤其是临","近期末考试，废寝忘食希望通过本次考试迎头赶上。然而事与愿违，成绩毫无进展，她认为是","自己智商不够，感到很沮丧，原有的对学习的自信与兴趣逐渐减弱。","","11","问题：","（1）根据书纳的归因理论，分析出小明和小红归因的因素。（4 分）","（2）具体分析小红归因方式的纬度及影响，并指导其进行合理归因。（7 分）"]', true);
        $qType = ''; // 当前题目类型 radio=单选，checkbox=多选
        $data = [];
        $question = []; // 题目
        $questionOption = []; // 选项
        $eduQuestionModel = new EduQuestionModel();
        foreach ($texts as $item) {
            if (is_numeric($item)) {
                continue;
            }
            // $qType = 'radio';
            if (strpos($item, '单选')!== false || strpos($item, '单项选择')!== false) {
                $qType = $eduQuestionModel::TYPE_RADIO;
                $data[] = [
                    'question_title' => $item,
                    'question_type' => $eduQuestionModel::TYPE_TITLE
                ];
                continue;
            } elseif (strpos($item, '多选')!== false || strpos($item, '多项选择')!== false) {
                if (!empty($question)) {
                    $data[] = [
                        'question_title' => implode('', $question),
                        'question_option' => $questionOption,
                        'question_type' => $qType
                    ];
                    $question = [];
                    $questionOption = [];
                }
                $qType = $eduQuestionModel::TYPE_CHECKBOX;
                $data[] = [
                    'question_title' => $item,
                    'question_type' => $eduQuestionModel::TYPE_TITLE
                ];
                continue;
            } elseif (strpos($item, '判断')!== false || strpos($item, '判断选择')!== false) {
                if (!empty($question)) {
                    $data[] = [
                        'question_title' => implode('', $question),
                        'question_option' => $questionOption,
                        'question_type' => $qType
                    ];
                    $question = [];
                    $questionOption = [];
                }
                $qType = $eduQuestionModel::TYPE_JUDGE;
                $data[] = [
                    'question_title' => $item,
                    'question_type' => $eduQuestionModel::TYPE_TITLE
                ];
                continue;
            } elseif (strpos($item, '填空')!== false) {
                if (!empty($question)) {
                    $data[] = [
                        'question_title' => implode('', $question),
                        'question_option' => $questionOption,
                        'question_type' => $qType
                    ];
                    $question = [];
                    $questionOption = [];
                }
                $qType =  $eduQuestionModel::TYPE_FILL;
                $data[] = [
                    'question_title' => $item,
                    'question_type' => $eduQuestionModel::TYPE_TITLE
                ];
                continue;
            } elseif (strpos($item, '辨析')!== false) {
                if (!empty($question)) {
                    $data[] = [
                        'question_title' => implode('', $question),
                        'question_option' => $questionOption,
                        'question_type' => $qType
                    ];
                    $question = [];
                    $questionOption = [];
                }
                $qType = $eduQuestionModel::TYPE_ANALYSIS;
                $data[] = [
                    'question_title' => $item,
                    'question_type' => $eduQuestionModel::TYPE_TITLE
                ];
                continue;
            } elseif (strpos($item, '材料分析')!== false) {
                if (!empty($question)) {
                    $data[] = [
                        'question_title' => implode('', $question),
                        'question_option' => $questionOption,
                        'question_type' => $qType
                    ];
                    $question = [];
                    $questionOption = [];
                }
                $qType = $eduQuestionModel::TYPE_MATERIAL;
                $data[] = [
                    'question_title' => $item,
                    'question_type' => $eduQuestionModel::TYPE_TITLE
                ];
                continue;
            }
            if ($qType == eduQuestionModel::TYPE_RADIO || $qType == eduQuestionModel::TYPE_CHECKBOX || $qType ==  eduQuestionModel::TYPE_JUDGE) {
                $this->getRadioInfo($item, $data, $question, $questionOption, $qType);
            }
            if ($qType ==  eduQuestionModel::TYPE_FILL) {
                $this->getFillInfo($item, $data, $question, $qType);
            }
        }
        dd($data);
    }

    /** 
     * 获取填空题信息
     */
    public function getFillInfo($item, &$data, &$question, $qType)
    {
        $patternQ = "/^\d{1,}\./"; // 匹配以数字开头的字符串
        // 大小写字母开头
        $patternQo = "/^[ABCDabcd]/";
        if (preg_match($patternQ, $item)) {
            if (!empty($question)) {
                $data[] = [
                    'question_title' => implode('', $question),
                    'question_type' => $qType
                ];
            }
            // 题目
            $question = [$item];
        } else {
            // 题目被拆成多行了
            $question[] = $item;
        }
    }

    /** 
     * 获取单选题信息
     */
    public function getRadioInfo($item, &$data, &$question, &$questionOption, $qType)
    {
        $patternQ = "/^\d{1,}\./"; // 匹配以数字开头的字符串
        // 大小写字母开头
        $patternQo = "/^[ABCDabcd]/";
        if (preg_match($patternQ, $item)) {
            if (!empty($question)) {
                $data[] = [
                    'question_title' => implode('', $question),
                    'question_option' => $questionOption,
                    'question_type' => $qType
                ];
            }
            // 题目
            $question = [$item];
            $questionOption = [];
        } elseif (preg_match($patternQo, $item)) {
            // 选项
            $questionOption = array_merge($questionOption, explode("\t", $item));
        } else {
            // 题目被拆成多行了
            $question[] = $item;
        }
        // \Log::info($question);
        // \Log::info($questionOption);
    }
}
